; Конечный автомат, описывающий дверь
(let ((state 'zaperto))
    (defun fsm (input)
        (case state
          ((zaperto)
           (cond ((eql input 'otopri)
                  (setf state 'zakrito))))
          
          ((zakrito)
           (case input
             ((otkroi) (setf state 'otkrito))
             ((zapri)  (setf state 'zaperto))))

           ((otkrito)
            (case input
              ((zakroi) (setf state 'zakrito))
              ((zapri)  (setf state 'zaperto)))))))
